package org.jeecg.modules.crm.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * @Description: 客户信息
 * @Author: jeecg-boot
 * @Date: 2023-06-03
 * @Version: V1.0
 */
@Data
@TableName("crm_customer")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "crm_customer对象", description = "客户信息")
public class CrmCustomer implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;

    /**
     * 客户编号
     */
    @Excel(name = "客户编号", width = 15)
    @ApiModelProperty(value = "客户编号")
    private String customerCode;

    /**
     * 客户名称
     */
    @Excel(name = "客户名称", width = 15)
    @ApiModelProperty(value = "客户名称")
    private String customerName;

    /**
     * 客户类型
     */
    @Excel(name = "客户类型", width = 15, dicCode = "customer_type")
    @ApiModelProperty(value = "客户类型")
    private String customerType;

    /**
     * 所属行业
     */
    @Excel(name = "所属行业", width = 15, dicCode = "industry_type")
    @ApiModelProperty(value = "所属行业")
    private String industry;

    /**
     * 客户来源
     */
    @Excel(name = "客户来源", width = 15, dicCode = "customer_source")
    @ApiModelProperty(value = "客户来源")
    private String customerSource;

    /**
     * 信用等级
     */
    @Excel(name = "信用等级", width = 15, dicCode = "credit_rating")
    @ApiModelProperty(value = "信用等级")
    private String creditRating;

    /**
     * 跟进状态
     */
    @Excel(name = "跟进状态", width = 15, dicCode = "follow_up_status")
    @ApiModelProperty(value = "跟进状态")
    private String followUpStatus;

    /**
     * 跟进人员
     */
    @Excel(name = "跟进人员", width = 15)
    @ApiModelProperty(value = "跟进人员")
    private String followUpPerson;

    /**
     * 欠款方向
     */
    @Excel(name = "欠款方向", width = 15)
    @ApiModelProperty(value = "欠款方向")
    private String debtDirection;

    /**
     * 单位编号
     */
    @Excel(name = "单位编号", width = 15)
    @ApiModelProperty(value = "单位编号")
    private String unitCode;

    /**
     * 单位名称
     */
    @Excel(name = "单位名称", width = 15)
    @ApiModelProperty(value = "单位名称")
    private String unitName;

    /**
     * 客户标签
     */
    @Excel(name = "客户标签", width = 15)
    @ApiModelProperty(value = "客户标签")
    private String customerTag;

    /**
     * 联系人
     */
    @Excel(name = "联系人", width = 15)
    @ApiModelProperty(value = "联系人")
    private String contactPerson;

    /**
     * 联系人职位
     */
    @Excel(name = "联系人职位", width = 15)
    @ApiModelProperty(value = "联系人职位")
    private String position;

    /**
     * 电话
     */
    @Excel(name = "电话", width = 15)
    @ApiModelProperty(value = "电话")
    private String contactPhone;

    /**
     * 手机号码
     */
    @Excel(name = "手机号码", width = 15)
    @ApiModelProperty(value = "手机号码")
    private String mobilePhone;

    /**
     * 社交联系方式
     */
    @Excel(name = "社交联系方式", width = 15)
    @ApiModelProperty(value = "社交联系方式")
    private String socialContact;

    /**
     * 性别
     */
    @Excel(name = "性别", width = 15, dicCode = "sex")
    @ApiModelProperty(value = "性别")
    private String gender;

    /**
     * 生日
     */
    @Excel(name = "生日", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "生日")
    private Date birthday;

    /**
     * 电子邮箱
     */
    @Excel(name = "电子邮箱", width = 15)
    @ApiModelProperty(value = "电子邮箱")
    private String email;

    /**
     * 开户银行
     */
    @Excel(name = "开户银行", width = 15)
    @ApiModelProperty(value = "开户银行")
    private String bankName;

    /**
     * 开户支行
     */
    @Excel(name = "开户支行", width = 15)
    @ApiModelProperty(value = "开户支行")
    private String bankBranch;

    /**
     * 银行账号
     */
    @Excel(name = "银行账号", width = 15)
    @ApiModelProperty(value = "银行账号")
    private String bankAccount;

    /**
     * 账户名称
     */
    @Excel(name = "账户名称", width = 15)
    @ApiModelProperty(value = "账户名称")
    private String accountName;

    /**
     * 纳税人识别号
     */
    @Excel(name = "纳税人识别号", width = 15)
    @ApiModelProperty(value = "纳税人识别号")
    private String taxNumber;

    /**
     * 发票抬头
     */
    @Excel(name = "发票抬头", width = 15)
    @ApiModelProperty(value = "发票抬头")
    private String invoiceTitle;

    /**
     * 信用额度
     */
    @Excel(name = "信用额度", width = 15)
    @ApiModelProperty(value = "信用额度")
    private BigDecimal creditLimit;

    /**
     * 账期(天)
     */
    @Excel(name = "账期(天)", width = 15)
    @ApiModelProperty(value = "账期(天)")
    private Integer paymentTerm;

    /**
     * 公司图片
     */
    @ApiModelProperty(value = "公司图片")
    private String companyImage;

    /**
     * 省编码
     */
    @ApiModelProperty(value = "省编码")
    private String provinceCode;

    /**
     * 省名称
     */
    @Excel(name = "省", width = 15)
    @ApiModelProperty(value = "省名称")
    private String provinceName;

    /**
     * 市编码
     */
    @ApiModelProperty(value = "市编码")
    private String cityCode;

    /**
     * 市名称
     */
    @Excel(name = "市", width = 15)
    @ApiModelProperty(value = "市名称")
    private String cityName;

    /**
     * 区编码
     */
    @ApiModelProperty(value = "区编码")
    private String areaCode;

    /**
     * 区名称
     */
    @Excel(name = "区", width = 15)
    @ApiModelProperty(value = "区名称")
    private String areaName;

    /**
     * 详细地址
     */
    @Excel(name = "详细地址", width = 15)
    @ApiModelProperty(value = "详细地址")
    private String address;

    /**
     * 备注
     */
    @Excel(name = "备注", width = 15)
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
    private String createBy;

    /**
     * 创建时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建时间")
    private Date createTime;

    /**
     * 更新人
     */
    @ApiModelProperty(value = "更新人")
    private String updateBy;

    /**
     * 更新时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;

    /**
     * 删除状态
     */
    @TableLogic
    @ApiModelProperty(value = "删除状态")
    private Integer delFlag;

    /**
     * 租户ID
     */
    private Integer tenantId;
} 